package ua.yandex.collections;

public interface MyList {

    /**
     * добавляет элемент в конец коллекции
     */
    void add(Object e);

    /**
     * добавляет элемент в указанное место коллекции,
     * и бросает исключение если индекс выходит за рамки
     */
    void add(int index, Object e);

    /**
     * добавляет массив элементов в конец коллекции
     */
    void addAll(Object[] c);

    /**
     * добавляет массив элементов в указанное место коллекции,
     * и бросает исключение если индекс выходит за рамки
     */
    void addAll(int index, Object[] c);

    /**
     * возвращает элемент по индексу,
     * и бросает исключение если индекс выходит за рамки
     */
    Object get(int index);

    /**
     * удаляет элемент по индексу,
     * и бросает исключение если индекс выходит за рамки
     */
    Object remove(int index);

    /**
     * изменяет значение элемента,
     * и бросает исключение если индекс выходит за рамки
     */
    void set(int index, Object e);

    /**
     * поиск индекса по значению элемента
     * (выводит индекс первого найденного, или -1 в случае его отсутствия)
     */
    int indexOf(Object o);

    /**
     * размер коллекции
     */
    int size();

    /**
     * удаляет содержимое коллекции
     */
    void clear();

    /**
     * возвращает true если в коллекции нет элементов
     */
    boolean isEmpty();

    /**
     * преобразует коллекцию в массив объектов
     */
    Object[] toArray();

    /**
     * возвращает строку, в которой через запятую
     * выводятся значения элементов в коллекции
     */
    String toString();
}
